#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<winidows.h>
#include<time.h>

#define High 25
#define Width 50
int cells[High][Width];

void gotoxy (int x,int y)
{
	HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);
	COORD pos;
	pos.X=x;
	pos.Y=y;
	SetConsoleCursorPosition(handle,pos);
}

void startup()
{
	int i,j;
	for(i=0;i<High;i++)
	   for(j=0;j<Width;j++)
	   
	   	cells[i][j]=1; 
	   
}

void show()
{
  gotoxy(0,0);
  int i,j;
  for(i=0;i<High;i++)
  {
  	for(j=0;j<=Width;j++)
	  {
	  	if(cells[i][j]==1)
	  	    printf("*");
	  	else
	  	    printf(" ");
	   }
	   printf("\n"); 
  }
  Sleep(50);	
} 

void updateWithoutInput()
{
	int NewCells[High][Width];
	int NeibourNumber;
	int i,j;
	for(i=1;i<=Width-1;i++)
	{
		for(j=1;j<=Width-1;j++)
		{
		 NeibourNumber=cells[i-1][j-1]+cells[i-1][j]+cells[i-1][j+1]+cells[i][j-1]+cells[i][j++1]+cells[i+1][j-1]+cells[i+1][j-1]+cells[i+1][j]+cells[i+1][j+1];
		 if(NeibourNumber==3)
		    NewCells[i][j]=1;
		 else if(NeibourNumber==2)
		    NewCells[i][j]=cells[i][j];
		 else 
		    NewCells[i][j]=0; 
		} 
		 
	} 
	for(i=1;i<High-1;i++)
	   for(j=1;j<=Width-1;j++)
	      cells[i][j]=NewCells[i][j;]
}

int main()
{
	startup();
	while(1)
	{
		show();
		updateWithoutInput();
		updateWithInput();
	}
	return 0;
}

